package com.huike.web.controller.clues;

import com.huike.clues.domain.TbCourse;
import com.huike.clues.service.ITbCourseService;
import com.huike.common.core.controller.BaseController;
import com.huike.common.core.domain.AjaxResult;
import com.huike.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @Description TODO
 * @Author hzh
 * @Date 2023-07-12 12:09
 */

@RestController
@RequestMapping("/clues/course")
@Api(tags = "课程管理相关接口")
@Slf4j
public class TbCourseController extends BaseController {

    @Resource
    private ITbCourseService tbCourseService;

    /**
     * 查询课程管理列表 分页实现
     *
     * @param tbCourse
     * @return
     */
    @GetMapping("/list")
//    @PreAuthorize("@ss.hasPermi('clues:course:list')")
    @ApiOperation("查询课程管理列表")
    public TableDataInfo list(TbCourse tbCourse) {
        log.info("查询课程管理列表:{}", tbCourse);
        startPage();

        return tbCourseService.list(tbCourse);
    }

    /**
     * 获取课程管理详细信息 回显
     *
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    @ApiOperation("获取课程管理详细信息")
    public AjaxResult findCourseByCourseId(@PathVariable Long id) {
        log.info("查询id为{}的员工", id);
        return AjaxResult.success(tbCourseService.findCourseByCourseId(id));
    }

    /**
     * 课程下拉列表
     *
     * @param subject
     * @return
     */
    @GetMapping("/listselect")
    @ApiOperation("课程下拉列表")
    public AjaxResult listSelect(String subject) {
        TbCourse tbCourse = new TbCourse();
        if (subject != null) {
            tbCourse.setSubject(subject);
        }
        return AjaxResult.success(tbCourseService.listSelect(tbCourse));
    }

    /**
     * 新增课程管理
     *
     * @param tbCourse
     * @return
     */
    @PostMapping("")
    @ApiOperation("新增课程管理")
    public AjaxResult insert(@RequestBody TbCourse tbCourse) {
        log.info("新增课程:{}", tbCourse);
        tbCourseService.insert(tbCourse);
        return AjaxResult.success();
    }

    /**
     * 修改课程管理
     *
     * @param tbCourse
     * @return
     */
    @PutMapping()
    @ApiOperation("修改课程管理")
    public AjaxResult update(@RequestBody TbCourse tbCourse) {
        tbCourseService.update(tbCourse);
        return AjaxResult.success();
    }

    /**
     * 删除课程管理
     * @param ids
     * @return
     */
    @DeleteMapping("{ids}")
    @ApiOperation("批量删除课程管理")
    public AjaxResult deleteTbCoursesByIds(@PathVariable Long[] ids) {
        //获取成功删除的行数
        int rows = tbCourseService.deleteTbCoursesByIds(ids);

        //如果行数大于零,说明删除操作成功
        return toAjax(rows);
    }
}

